package paqv_vista;

import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
import paq_calculo.fun_calculo;
import paq_clase_interfaz.interfaz_asignatura;
import paq_clase_interfaz.interfaz_aula;
import paq_clase_interfaz.interfaz_cronograma;

import paq_clase_interfaz.interfaz_modulo;
import paq_clase_interfaz.interfaz_profesor;
import paq_clase_interfaz.interfaz_promocion;
import paq_clase_interfaz.interfaz_unidad_tematica;
import paq_entidades.enti_variables;
import paq_entidades.entiv_cronograma;
import paq_entidades.entiv_variables;
import paq_negocio.neg_cronograma;
import paq_sentencias.Ejecutarsql;

@ManagedBean()
@SessionScoped
public class Vista_cronograma extends Vista_campostxt {

    @EJB
    private interfaz_cronograma mens;
    @EJB
    private interfaz_cronograma comprobaraula;
    @EJB
    private interfaz_cronograma comprobarprofe;
    @EJB
    private interfaz_cronograma eliminar;
    @EJB
    private interfaz_cronograma insertar;
    @EJB
    private interfaz_cronograma actualizar;
    @EJB
    private interfaz_cronograma lista;
    @EJB
    private interfaz_unidad_tematica combounidad;
    @EJB
    private interfaz_modulo combomodulo;
    @EJB
    private interfaz_asignatura comboasignatura;
    @EJB
    private interfaz_promocion comboprmocion;
    @EJB
    private interfaz_aula comboaula;
    @EJB
    private interfaz_profesor comboprofesor;
    entiv_cronograma entidad = new entiv_cronograma();
    entiv_variables v = new entiv_variables();
    fun_calculo fu = new fun_calculo();
    Integer di;

    public void insertar() {
        Date fec = null;
        String asj = "";
        v.listacomprobaraula.clear();
        v.crs6 = comprobaraula.getcomprobaraula(txtaula);
        if (v.crs6.size() > 0) {
            try {
                while (v.crs6.next()) {
                    //v.crs6.getString("au_codigo");
                    fec = v.crs6.getDate("fd_fecha");
                }
                v.crs6.close();
            } catch (SQLException ex) {
            }
            asj = fu.formato_fecha(txtfechainicio);
            if (asj.equals(fec.toString())) {
                mensaje = "no se puede asignar esta aula";
            } else {
                insertar2();
//                di = fu.getDayOfTheWeek(txtfechainicio);
//                txtdia = di.toString();
////        insertar.insertar(txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, fu.formato_fecha_hora(txthorainicio), fu.formato_fecha_hora(txthorafin), fu.formato_fecha(txtfechainicio));
//                insertar.insertar(txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, txthorainicio2, txthorafin2, fu.formato_fecha(txtfechainicio));
            }
        } else {
            insertar2();
//            di = fu.getDayOfTheWeek(txtfechainicio);
//            txtdia = di.toString();
//            insertar.insertar(txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, txthorainicio2, txthorafin2, fu.formato_fecha(txtfechainicio));
        }
    }

    public void insertar2() {
        Date fec = null;
        String asj = "";
        v.listacomprobarprofesor.clear();
        v.crs7 = comprobarprofe.getcomprobarprofesor(txtprofesor);
        if (v.crs7.size() > 0) {
            try {
                while (v.crs7.next()) {
                    fec = v.crs7.getDate("fd_fecha");
                }
                v.crs7.close();
            } catch (SQLException ex) {
            }
            asj = fu.formato_fecha(txtfechainicio);
            if (asj.equals(fec.toString())) {
                mensaje = "no se puede asignar este profesor";
            } else {
                di = fu.getDayOfTheWeek(txtfechainicio);
                txtdia = di.toString();
//        insertar.insertar(txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, fu.formato_fecha_hora(txthorainicio), fu.formato_fecha_hora(txthorafin), fu.formato_fecha(txtfechainicio));
                insertar.insertar(txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, txthorainicio2, txthorafin2, fu.formato_fecha(txtfechainicio));
                mensaje = mens.getmensajei();
            }
        } else {
            di = fu.getDayOfTheWeek(txtfechainicio);
            txtdia = di.toString();
            insertar.insertar(txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, txthorainicio2, txthorafin2, fu.formato_fecha(txtfechainicio));
            mensaje = mens.getmensajei();
        }
    }

    public void eliminar() {
        entidad = (entiv_cronograma) tabla.getRowData();
        this.txtcodigo = entidad.getCodigo();
        eliminar.eliminar(txtcodigo);
        mensaje = mens.getmensajei();


    }

    public void modificar() {
        di = fu.getDayOfTheWeek(txtfechainicio);
        txtdia = di.toString();
        actualizar.actualizar(txtcodigo, txtaula, txtprofesor, txtunidad, txtasignatuta, txtmodulo, txtpromocion, txtdia, txthorainicio2, txthorafin2, fu.formato_fecha(txtfechainicio));
       limpiar();
        mensaje = mens.getmensajei();
    }

    public ArrayList<entiv_cronograma> getLista1() {
        ArrayList listae = new ArrayList();
        v.crs = lista.getLista(txtpromocion);
        try {
            entiv_cronograma objart;
            while (v.crs.next()) {
                objart = new entiv_cronograma();
                objart.setCodigo(v.crs.getString("fd_codigo"));
                objart.setAu_codigo(v.crs.getString("au_codigo"));
                objart.setPr_cedula(v.crs.getString("pr_cedula"));
                objart.setUtem_codigo(v.crs.getString("utem_codigo"));
                objart.setAsig_codigo(v.crs.getString("asig_codigo"));
                objart.setMod_codigo(v.crs.getString("mod_codigo"));
                objart.setProm_codigo(v.crs.getString("prom_codigo"));
                objart.setFd_dia(v.crs.getString("fd_dia"));
                objart.setFd_hora_i(v.crs.getString("fd_hora_i"));
                objart.setFd_hora_f(v.crs.getString("fd_hora_f"));
                objart.setFd_fecha(v.crs.getDate("fd_fecha"));
                listae.add(objart);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null,
                    e.getMessage());
        }
        return listae;
    }

    public void seleccionLista() throws ParseException {
        entidad = (entiv_cronograma) tabla.getRowData();
        this.txtcodigo = entidad.getCodigo();
        this.txtaula = entidad.getAu_codigo();
        this.txtprofesor = entidad.getPr_cedula();
        this.txtunidad = entidad.getUtem_codigo();
        this.txtasignatuta = entidad.getAsig_codigo();
        this.txtpromocion = entidad.getProm_codigo();
        this.txtmodulo = entidad.getMod_codigo();
        this.txtdia = entidad.getFd_dia();
        this.txthorainicio2 = entidad.getFd_hora_i();
        this.txthorafin2 = entidad.getFd_hora_f();
        this.txtfechainicio = entidad.getFd_fecha();
    }

    public List getListaprofe() {
        v.listaprofesor.clear();
        try {
            v.crs6 = comboprofesor.getListacomboprofesor();
            while (v.crs6.next()) {
                v.listaprofesor.add(new SelectItem(v.crs6.getString("pr_cedula"), v.crs6.getString("pr_nombres")));
            }
            v.crs6.close();
        } catch (SQLException ex) {
        }
        return v.listaprofesor;
    }

    public List getListaaula() {
        v.listaaula.clear();
        try {
            v.crs2 = comboaula.getListacomboaula();
            while (v.crs2.next()) {
                v.listaaula.add(new SelectItem(v.crs2.getString("au_codigo"), v.crs2.getString("au_numero")));
            }
            v.crs2.close();
        } catch (SQLException ex) {
        }
        return v.listaaula;
    }

    public List getListapromo() {
        v.listapromocion.clear();
        try {
            v.crs1 = comboprmocion.getListacombopromocion();
            while (v.crs1.next()) {
                v.listapromocion.add(new SelectItem(v.crs1.getString("prom_codigo"), v.crs1.getString("PRO_NOMBRE")));
            }
            v.crs1.close();
        } catch (SQLException ex) {
        }
        return v.listapromocion;
    }

    public List getListamodulo() {
        v.listamodulo.clear();
        try {
            v.crs3 = combomodulo.getListacombomoduloporpromocion(txtpromocion);

            while (v.crs3.next()) {
                v.listamodulo.add(new SelectItem(v.crs3.getString("mod_codigo"), v.crs3.getString("mod_nombre")));
            }

            v.crs3.close();
        } catch (SQLException ex) {
        }

        return v.listamodulo;

    }

    public List getListasignatura() {
        v.listaasignatura.clear();
        try {
            v.crs4 = comboasignatura.getListaactualizada(txtmodulo);
            while (v.crs4.next()) {
                v.listaasignatura.add(new SelectItem(v.crs4.getString("asig_codigo"), v.crs4.getString("asig_nombre")));
            }
            v.crs4.close();
        } catch (SQLException ex) {
        }
        return v.listaasignatura;
    }

    public List getListaunidad() {
        v.listaunidad.clear();
        try {
            v.crs5 = combounidad.getListacomboporasignatura(txtasignatuta);
            while (v.crs5.next()) {
                v.listaunidad.add(new SelectItem(v.crs5.getString("UTEM_codigo"), v.crs5.getString("UTEM_nombre")));
            }
            v.crs5.close();
        } catch (SQLException ex) {
        }
        return v.listaunidad;
    }

    public String devolver() {
        return txtpromocion;
    }

    public String devolvertabla() {
        return txtpromocion;
    }

    public String devolve2() {
        return txtmodulo;
    }

    public String devolver3() {

        return txtasignatuta;
    }

    public String devolver4() {
        txtmodulo = "x";
        return txtmodulo;
    }

    public String devolver5() {
        txtasignatuta = "x";
        return txtasignatuta;
    }

    public void limpiar() {
       txtcodigo="";
       txtaula="";
       txtprofesor="";
       txtunidad="";
       txtasignatuta="";
       txtmodulo="";
       txthorainicio2="";
       txthorafin2="";
       txtfechainicio=null;

    }
}
